<template>
    <view
        class="uni-calendar-item__weeks-box"
        :class="{
            'uni-calendar-item--disable': weeks.disable,
            'uni-calendar-item--before-checked-x': weeks.beforeMultiple,
            'uni-calendar-item--multiple': weeks.multiple,
            'uni-calendar-item--after-checked-x': weeks.afterMultiple,
        }"
        @click="choiceDate(weeks)"
        @mouseenter="handleMousemove(weeks)"
    >
        <view
            class="uni-calendar-item__weeks-box-item"
            :class="{
                'uni-calendar-item--checked':
                    calendar.fullDate === weeks.fullDate &&
                    (calendar.userChecked || !checkHover),
                'uni-calendar-item--checked-range-text': checkHover,
                'uni-calendar-item--before-checked': weeks.beforeMultiple,
                'uni-calendar-item--multiple': weeks.multiple,
                'uni-calendar-item--after-checked': weeks.afterMultiple,
                'uni-calendar-item--disable': weeks.disable,
            }"
        >
            <text
                v-if="selected && weeks.extraInfo"
                class="uni-calendar-item__weeks-box-circle"
            ></text>
            <text
                class="uni-calendar-item__weeks-box-text uni-calendar-item__weeks-box-text-disable uni-calendar-item--checked-text"
            >
                {{ weeks.date }}
            </text>
        </view>
        <view :class="{ 'uni-calendar-item--today': weeks.isToday }"></view>
    </view>
</template>

<script>
export default {
    props: {
        weeks: {
            type: Object,
            default() {
                return {}
            },
        },
        calendar: {
            type: Object,
            default: () => {
                return {}
            },
        },
        selected: {
            type: Array,
            default: () => {
                return []
            },
        },
        checkHover: {
            type: Boolean,
            default: false,
        },
    },
    methods: {
        choiceDate(weeks) {
            this.$emit('change', weeks)
        },
        handleMousemove(weeks) {
            this.$emit('handleMouse', weeks)
        },
    },
}
</script>

<style lang="scss">
$uni-primary: #007aff !default;

.uni-calendar-item__weeks-box {
    flex: 1;
    /* #ifndef APP-NVUE */
    display: flex;
    /* #endif */
    flex-direction: column;
    justify-content: center;
    align-items: center;
    margin: 1px 0;
    position: relative;
}

.uni-calendar-item__weeks-box-text {
    font-size: 28rpx;
    // font-family: Lato-Bold, Lato;
    font-weight: bold;
    color: darken($color: $uni-primary, $amount: 40%);
}

.uni-calendar-item__weeks-box-item {
    position: relative;
    /* #ifndef APP-NVUE */
    display: flex;
    /* #endif */
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 80rpx;
    height: 80rpx;
    /* #ifdef H5 */
    cursor: pointer;
    /* #endif */
}

.uni-calendar-item__weeks-box-circle {
    position: absolute;
    top: 10rpx;
    right: 10rpx;
    width: 16rpx;
    height: 16rpx;
    border-radius: 16rpx;
    background-color: #dd524d;
}

.uni-calendar-item__weeks-box .uni-calendar-item--disable {
    cursor: default;
}

.uni-calendar-item--disable .uni-calendar-item__weeks-box-text-disable {
    color: #d1d1d1;
}

.uni-calendar-item--today {
    position: absolute;
    top: 20rpx;
    right: 17%;
    background-color: #dd524d;
    width: 12rpx;
    height: 12rpx;
    border-radius: 50%;
}

.uni-calendar-item--extra {
    color: #dd524d;
    opacity: 0.8;
}

.uni-calendar-item__weeks-box .uni-calendar-item--checked {
    background-color: $uni-primary;
    border-radius: 50%;
    box-sizing: border-box;
    border: 3px solid #fff;
}

.uni-calendar-item--checked .uni-calendar-item--checked-text {
    color: #fff;
}

.uni-calendar-item--multiple .uni-calendar-item--checked-range-text {
    color: #333;
}

.uni-calendar-item--multiple {
    background-color: #f6f7fc;
    // color: #fff;
}

.uni-calendar-item--multiple .uni-calendar-item--before-checked,
.uni-calendar-item--multiple .uni-calendar-item--after-checked {
    background-color: $uni-primary;
    border-radius: 50%;
    box-sizing: border-box;
    border: 3px solid #f6f7fc;
}

.uni-calendar-item--before-checked .uni-calendar-item--checked-text,
.uni-calendar-item--after-checked .uni-calendar-item--checked-text {
    color: #fff;
}

.uni-calendar-item--before-checked-x {
    border-top-left-radius: 100rpx;
    border-bottom-left-radius: 100rpx;
    box-sizing: border-box;
    background-color: #f6f7fc;
}

.uni-calendar-item--after-checked-x {
    border-top-right-radius: 100rpx;
    border-bottom-right-radius: 100rpx;
    background-color: #f6f7fc;
}
</style>
